/********************************************************************************
 * Project Name		[JavaSE_Fundamentals]
 * File Name     	[TestSystem.java]
 * Creation Date 	[2015-01-01]
 * 
 * Copyright© ge.y.yang@gmail.com All Rights Reserved
 * 
 * Work hard, play harder, think big and keep fit
 ********************************************************************************/
package api.lang;

/**
 * java.lang.System测试
 * 
 * @author 不落的太阳(Sean Yang aka ShortPeace)
 * @version 1.0
 * @since jdk 1.8
 * 
 */
public class TestSystem {

	/**
	 * 复制数组System.arrayCopy()
	 */
	public static void testArrayCopy() {
		int[] src = { 1, 2, 3, 4, 5 };
		int[] dest = new int[10];
		// param1 源数组
		// param2 从源数组第几个元素开始拷贝
		// param3 目标数组
		// param4 从目标数组第几个元素开始拷贝
		// param5 要拷贝的元素个数
		System.arraycopy(src, 0, dest, 2, src.length);
		System.out.println(java.util.Arrays.toString(dest));
	}

	/**
	 * 获取当前的系统时间System.currentTimeMillis()
	 */
	public static void testCurrentTimeMillis() {
		System.out.println(System.currentTimeMillis());
	}

	/**
	 * 获取系统属性getProperties()
	 */
	public static void testGetProperties() {
		// 获得系统的所有属性名值对
		System.out.println(System.getProperties());
		System.out.println("");
		// 获得指定属性名的属性值
		System.out.println(System.getProperty("user.home"));
		System.out.println(System.getProperty("os.name"));
	}

	/**
	 * 获取环境变量
	 */
	public static void testGetEnv() {
		System.out.println(System.getenv("JAVA_HOME"));
		System.out.println(System.getenv("PATH"));
	}

	/**
	 * 其他的一些方法
	 */
	public static void testOtherMethods() {
		System.exit(0);// 0 表示正常退出虚拟机, 非0表示异常退出虚拟机
		System.gc(); // 建议JVM启动垃圾回收器, 但不一定会启动, 一旦一个对象被垃圾回收, 则会调用对象的finalize()方法
	}

	public static void main(String[] args) {
		testArrayCopy();
		testCurrentTimeMillis();
		testGetProperties();
		testGetEnv();
	}
}
